#include <cv.h>
#include <highgui.h>
#include <math.h>
#include <stdio.h>
#include "CalcularCM.h"
#include "PreProcessador.h"
#include "EstruturaEquivalente.h"
#include "ImgMatriz.h"
#include "Contador.h"
#include "SegmentaRGB.h"

int main(int argc, char** argv) {
    //Carrega imagem

//    IplImage* img_cartela = cvLoadImage("teste.png", CV_LOAD_IMAGE_UNCHANGED);
//    IplImage* img_comprimido = cvLoadImage("teste.png", CV_LOAD_IMAGE_UNCHANGED);
//    IplImage* img_original = cvLoadImage("teste.png", CV_LOAD_IMAGE_UNCHANGED);
//
//    SegmentaRGB srgb;
//    srgb.SegmentaImg(img_cartela);
//    srgb.SegmentaImg(img_comprimido);
//
//    PreProcessador pp;
//    pp.PreProcesso_comprimido(img_comprimido);
//    pp.PreProcesso_cartela(img_cartela);
//
//    CalcularCM cm_comprimido;
//    cm_comprimido.ListarCM(img_comprimido);   
//
//    CalcularCM cm_cartela;
//    cm_cartela.ListarCM(img_cartela); 
//
//    for (int i = 0; i < cm_comprimido.listaCentroMassa.size; i++) {
//        posicao_struct p_cm;
//        p_cm.x = cm_comprimido.listaCentroMassa.get(i).x;
//        p_cm.y = cm_comprimido.listaCentroMassa.get(i).y;
//        int label;
//        label = cm_cartela.matrizRegioes[p_cm.x][p_cm.y].GetLabel();
//
//    }
//
//    cm_comprimido.MarcarCM(img_original);
//    for (int i = 0; i < cm_comprimido.listaCentroMassa.size; i++) {
//        posicao_struct p_cm;
//        p_cm.x = cm_comprimido.listaCentroMassa.get(i).x;
//        p_cm.y = cm_comprimido.listaCentroMassa.get(i).y;
//        cvCircle(img_original, cvPoint(p_cm.x, p_cm.y), 20, CV_RGB(0, 255, 255), 3, CV_AA, 0);
//    }
//    cvNamedWindow("Resultado", 1);
//    cvShowImage("Resultado", img_original);
//    cvWaitKey(0);

    Contador c;
    c.Executar();
    return 0;
}


